// When updating this file, please also update
// Relay: https://github.com/getsentry/relay/blob/a91f0c92860f88789ad6092ef5b1062aa3e34b80/relay-event-schema/src/protocol/device_class.rs
// Python: https://github.com/getsentry/sentry/blob/c53745bb716899758d0f1caf5446d830e4ebbdb2/src/sentry/api/helpers/ios_models.py

// We used to auto-generate this file from the ios-device-list library the node package (https://www.npmjs.com/package/ios-device-list)
// is unmaintained; see https://github.com/pbakondy/ios-device-list.
// Therefore, we manually update the device mapping list below.
// You can check https://gist.github.com/adamawolf/3048717 or https://theapplewiki.com/wiki/models for a comprehensive list of Apple devices.

const iOSDeviceMapping: Record<string, string> = {
  // iPod touch
  'iPod1,1': 'iPod touch',
  'iPod2,1': 'iPod touch (2nd generation)',
  'iPod3,1': 'iPod touch (3rd generation)',
  'iPod4,1': 'iPod touch (4th generation)',
  'iPod5,1': 'iPod touch (5th generation)',
  'iPod7,1': 'iPod touch (6th generation)',
  'iPod9,1': 'iPod touch (7th generation)',
  // iPhone
  'iPhone1,1': 'iPhone',
  'iPhone1,2': 'iPhone 3G',
  'iPhone2,1': 'iPhone 3GS',
  'iPhone3,1': 'iPhone 4',
  'iPhone3,2': 'iPhone 4',
  'iPhone3,3': 'iPhone 4',
  'iPhone4,1': 'iPhone 4S',
  'iPhone5,1': 'iPhone 5',
  'iPhone5,2': 'iPhone 5',
  'iPhone5,3': 'iPhone 5c',
  'iPhone5,4': 'iPhone 5c',
  'iPhone6,1': 'iPhone 5s',
  'iPhone6,2': 'iPhone 5s',
  'iPhone8,4': 'iPhone SE (1st generation)',
  'iPhone7,2': 'iPhone 6',
  'iPhone7,1': 'iPhone 6 Plus',
  'iPhone8,1': 'iPhone 6s',
  'iPhone8,2': 'iPhone 6s Plus',
  'iPhone9,1': 'iPhone 7',
  'iPhone9,3': 'iPhone 7',
  'iPhone9,2': 'iPhone 7 Plus',
  'iPhone9,4': 'iPhone 7 Plus',
  'iPhone10,1': 'iPhone 8',
  'iPhone10,4': 'iPhone 8',
  'iPhone10,2': 'iPhone 8 Plus',
  'iPhone10,5': 'iPhone 8 Plus',
  'iPhone10,3': 'iPhone X',
  'iPhone10,6': 'iPhone X',
  'iPhone11,8': 'iPhone XR',
  'iPhone11,2': 'iPhone XS',
  'iPhone11,6': 'iPhone XS Max',
  'iPhone11,4': 'iPhone XS Max',
  'iPhone12,1': 'iPhone 11',
  'iPhone12,3': 'iPhone 11 Pro',
  'iPhone12,5': 'iPhone 11 Pro Max',
  'iPhone12,8': 'iPhone SE (2nd generation)',
  'iPhone13,1': 'iPhone 12 mini',
  'iPhone13,2': 'iPhone 12',
  'iPhone13,3': 'iPhone 12 Pro',
  'iPhone13,4': 'iPhone 12 Pro Max',
  'iPhone14,4': 'iPhone 13 mini',
  'iPhone14,5': 'iPhone 13',
  'iPhone14,2': 'iPhone 13 Pro',
  'iPhone14,3': 'iPhone 13 Pro Max',
  'iPhone14,6': 'iPhone SE (3rd generation)',
  'iPhone14,7': 'iPhone 14',
  'iPhone14,8': 'iPhone 14 Plus',
  'iPhone15,2': 'iPhone 14 Pro',
  'iPhone15,3': 'iPhone 14 Pro Max',
  'iPhone15,4': 'iPhone 15',
  'iPhone15,5': 'iPhone 15 Plus',
  'iPhone16,1': 'iPhone 15 Pro',
  'iPhone16,2': 'iPhone 15 Pro Max',
  'iPhone17,1': 'iPhone 16 Pro',
  'iPhone17,2': 'iPhone 16 Pro Max',
  'iPhone17,3': 'iPhone 16',
  'iPhone17,4': 'iPhone 16 Plus',
  'iPhone17,5': 'iPhone 16e',
  'iPhone18,1': 'iPhone 17 Pro',
  'iPhone18,2': 'iPhone 17 Pro Max',
  'iPhone18,3': 'iPhone 17',
  'iPhone18,4': 'iPhone Air',
  // iPad Pro
  'iPad6,7': 'iPad Pro (12.9-inch)',
  'iPad6,8': 'iPad Pro (12.9-inch)',
  'iPad6,3': 'iPad Pro (9.7-inch)',
  'iPad6,4': 'iPad Pro (9.7-inch)',
  'iPad7,1': 'iPad Pro (12.9-inch, 2nd generation)',
  'iPad7,2': 'iPad Pro (12.9-inch, 2nd generation)',
  'iPad7,3': 'iPad Pro (10.5-inch)',
  'iPad7,4': 'iPad Pro (10.5-inch)',
  'iPad8,1': 'iPad Pro (11-inch)',
  'iPad8,2': 'iPad Pro (11-inch)',
  'iPad8,3': 'iPad Pro (11-inch)',
  'iPad8,4': 'iPad Pro (11-inch)',
  'iPad8,5': 'iPad Pro (12.9-inch) (3rd generation)',
  'iPad8,6': 'iPad Pro (12.9-inch) (3rd generation)',
  'iPad8,7': 'iPad Pro (12.9-inch) (3rd generation)',
  'iPad8,8': 'iPad Pro (12.9-inch) (3rd generation)',
  'iPad8,9': 'iPad Pro (11-inch) (2nd generation)',
  'iPad8,10': 'iPad Pro (11-inch) (2nd generation)',
  'iPad8,11': 'iPad Pro (12.9-inch) (4th generation)',
  'iPad8,12': 'iPad Pro (12.9-inch) (4th generation)',
  'iPad13,4': 'iPad Pro (11-inch) (3rd generation)',
  'iPad13,5': 'iPad Pro (11-inch) (3rd generation)',
  'iPad13,6': 'iPad Pro (11-inch) (3rd generation)',
  'iPad13,7': 'iPad Pro (11-inch) (3rd generation)',
  'iPad14,3': 'iPad Pro (11-inch) (4th generation)',
  'iPad14,4': 'iPad Pro (11-inch) (4th generation)',
  'iPad13,8': 'iPad Pro (12.9-inch) (5th generation)',
  'iPad13,9': 'iPad Pro (12.9-inch) (5th generation)',
  'iPad13,10': 'iPad Pro (12.9-inch) (5th generation)',
  'iPad13,11': 'iPad Pro (12.9-inch) (5th generation)',
  'iPad14,5': 'iPad Pro (12.9-inch) (6th generation)',
  'iPad14,6': 'iPad Pro (12.9-inch) (6th generation)',
  'iPad16,3': 'iPad Pro (11-inch) (5th generation)',
  'iPad16,4': 'iPad Pro (11-inch) (5th generation)',
  'iPad16,5': 'iPad Pro (12.9-inch) (7th generation)',
  'iPad16,6': 'iPad Pro (12.9-inch) (7th generation)',
  // iPad mini
  'iPad2,5': 'iPad mini',
  'iPad2,6': 'iPad mini',
  'iPad2,7': 'iPad mini',
  'iPad4,4': 'iPad mini 2',
  'iPad4,5': 'iPad mini 2',
  'iPad4,6': 'iPad mini 2',
  'iPad4,7': 'iPad mini 3',
  'iPad4,8': 'iPad mini 3',
  'iPad4,9': 'iPad mini 3',
  'iPad5,1': 'iPad mini 4',
  'iPad5,2': 'iPad mini 4',
  'iPad11,1': 'iPad mini (5th generation)',
  'iPad11,2': 'iPad mini (5th generation)',
  'iPad14,1': 'iPad mini (6th generation)',
  'iPad14,2': 'iPad mini (6th generation)',
  // iPad Air
  'iPad4,1': 'iPad Air',
  'iPad4,2': 'iPad Air',
  'iPad4,3': 'iPad Air',
  'iPad5,3': 'iPad Air 2',
  'iPad5,4': 'iPad Air 2',
  'iPad11,3': 'iPad Air (3rd generation)',
  'iPad11,4': 'iPad Air (3rd generation)',
  'iPad13,1': 'iPad Air (4th generation)',
  'iPad13,2': 'iPad Air (4th generation)',
  'iPad13,16': 'iPad Air (5th generation)',
  'iPad13,17': 'iPad Air (5th generation)',
  'iPad14,8': 'iPad Air (6th generation)',
  'iPad14,9': 'iPad Air (6th generation)',
  'iPad14,10': 'iPad Air (7th generation)',
  'iPad14,11': 'iPad Air (7th generation)',
  // iPad
  'iPad1,1': 'iPad',
  'iPad2,1': 'iPad 2',
  'iPad2,2': 'iPad 2',
  'iPad2,3': 'iPad 2',
  'iPad2,4': 'iPad 2',
  'iPad3,1': 'iPad (3rd generation)',
  'iPad3,2': 'iPad (3rd generation)',
  'iPad3,3': 'iPad (3rd generation)',
  'iPad3,4': 'iPad (4th generation)',
  'iPad3,5': 'iPad (4th generation)',
  'iPad3,6': 'iPad (4th generation)',
  'iPad6,11': 'iPad (5th generation)',
  'iPad6,12': 'iPad (5th generation)',
  'iPad7,5': 'iPad (6th generation)',
  'iPad7,6': 'iPad (6th generation)',
  'iPad7,11': 'iPad (7th generation)',
  'iPad7,12': 'iPad (7th generation)',
  'iPad11,6': 'iPad (8th generation)',
  'iPad11,7': 'iPad (8th generation)',
  'iPad12,1': 'iPad (9th generation)',
  'iPad12,2': 'iPad (9th generation)',
  'iPad13,18': 'iPad (10th generation)',
  'iPad13,19': 'iPad (10th generation)',
  // Apple Watch
  'Watch1,1': 'Apple Watch (1st generation)',
  'Watch1,2': 'Apple Watch (1st generation)',
  'Watch2,6': 'Apple Watch Series 1',
  'Watch2,7': 'Apple Watch Series 1',
  'Watch2,3': 'Apple Watch Series 2',
  'Watch2,4': 'Apple Watch Series 2',
  'Watch3,1': 'Apple Watch Series 3',
  'Watch3,2': 'Apple Watch Series 3',
  'Watch3,3': 'Apple Watch Series 3',
  'Watch3,4': 'Apple Watch Series 3',
  'Watch4,1': 'Apple Watch Series 4',
  'Watch4,2': 'Apple Watch Series 4',
  'Watch4,3': 'Apple Watch Series 4',
  'Watch4,4': 'Apple Watch Series 4',
  'Watch5,1': 'Apple Watch Series 5',
  'Watch5,2': 'Apple Watch Series 5',
  'Watch5,3': 'Apple Watch Series 5',
  'Watch5,4': 'Apple Watch Series 5',
  'Watch5,9': 'Apple Watch SE',
  'Watch5,10': 'Apple Watch SE',
  'Watch5,11': 'Apple Watch SE',
  'Watch5,12': 'Apple Watch SE',
  'Watch6,1': 'Apple Watch Series 6',
  'Watch6,2': 'Apple Watch Series 6',
  'Watch6,3': 'Apple Watch Series 6',
  'Watch6,4': 'Apple Watch Series 6',
  'Watch6,6': 'Apple Watch Series 7',
  'Watch6,7': 'Apple Watch Series 7',
  'Watch6,8': 'Apple Watch Series 7',
  'Watch6,9': 'Apple Watch Series 7',
  'Watch6,10': 'Apple Watch SE (2nd generation)',
  'Watch6,11': 'Apple Watch SE (2nd generation)',
  'Watch6,12': 'Apple Watch SE (2nd generation)',
  'Watch6,13': 'Apple Watch SE (2nd generation)',
  'Watch6,14': 'Apple Watch Series 8',
  'Watch6,15': 'Apple Watch Series 8',
  'Watch6,16': 'Apple Watch Series 8',
  'Watch6,17': 'Apple Watch Series 8',
  'Watch6,18': 'Apple Watch Ultra',
  'Watch7,1': 'Apple Watch Series 9',
  'Watch7,2': 'Apple Watch Series 9',
  'Watch7,4': 'Apple Watch Series 9',
  'Watch7,3': 'Apple Watch Series 9',
  'Watch7,5': 'Apple Watch Ultra 2',
  'Watch7,8': 'Apple Watch Series 10',
  'Watch7,9': 'Apple Watch Series 10',
  'Watch7,10': 'Apple Watch Series 10',
  'Watch7,11': 'Apple Watch Series 10',
  'Watch7,12': 'Apple Watch Ultra 3',
  'Watch7,13': 'Apple Watch SE (3rd gen)',
  'Watch7,14': 'Apple Watch SE (3rd gen)',
  'Watch7,15': 'Apple Watch SE (3rd gen)',
  'Watch7,16': 'Apple Watch SE (3rd gen)',
  'Watch7,17': 'Apple Watch Series 11',
  'Watch7,18': 'Apple Watch Series 11',
  'Watch7,19': 'Apple Watch Series 11',
  'Watch7,20': 'Apple Watch Series 11',
  // Apple TV
  'AppleTV1,1': 'Apple TV (1st generation)',
  'AppleTV2,1': 'Apple TV (2nd generation)',
  'AppleTV3,1': 'Apple TV (3rd generation)',
  'AppleTV3,2': 'Apple TV (3rd generation)',
  'AppleTV5,3': 'Apple TV (4th generation)',
  'AppleTV6,2': 'Apple TV 4K',
  'AppleTV11,1': 'Apple TV 4K (2nd generation)',
  'AppleTV14,1': 'Apple TV 4K (3rd generation)',
  // Apple Vision Pro
  'RealityDevice14,1': 'Apple Vision Pro',
};

export {iOSDeviceMapping};
